﻿using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace UI
{
    public enum UIPanelType
    {
        MainMenu,
        FbxList,
        Lodin,
        Menu,
        LoadAsynu,
        Button1,
        Button2,
        Button3,
        Button4,
        MissionPanel,
        SystemPanel,
        RelationshipPanel,
        AddMeshCollider,
        模型,
        对象,
        招商计划,
        档案管理,
        维护管理,
        文档管理,
        属性管理,
        盘点管理,
        构件保修,
        空间分配,
        保养清单,
        报修清单,
        对象文档管理,
        对象档案管理


    }
    public class BasePanel : MonoBehaviour
    {
        /// <summary>
        /// 页面进入显示，可交互
        /// </summary>
        public virtual void OnEnter() { }

        /// <summary>
        /// 页面暂停（弹出了其他页面），不可交互
        /// </summary>
        public virtual void OnPause() { }

        /// <summary>
        /// 页面继续显示（其他页面关闭），可交互
        /// </summary>
        public virtual void OnResume() { }

        /// <summary>
        /// 本页面被关闭（移除），不再显示在界面上
        /// </summary>
        public virtual void OnExit() { }
        /// <summary>
        /// 将上一个界面带入进入的界面
        /// </summary>
        /// <param name="panel"></param>
        public virtual void OnEnter(BasePanel panel) { }
    }
    [Serializable]
    public class UIPanelInfo : ISerializationCallbackReceiver
    {//和json文件信息对应的一个类
     //不可序列化的，因为这里unity解析json文件时没办法解析枚举类型，所以下面定义了一个string类型的字段panelTypeString,用于两者的转化
        [NonSerialized]
        public UIPanelType panelType;//面板类型
        public string panelTypeString;
        public string path;//面板所在路径

        //实现ISerializationCallbackReceiver的接口， 反序列化方法，从文本信息到对象
        public void OnAfterDeserialize()
        {
            UIPanelType type = (UIPanelType)System.Enum.Parse(typeof(UIPanelType), panelTypeString);//把一个字符串转化为一个枚举
            panelType = type;
        }

        //实现接口， 序列化方法，从对象到文本信息
        public void OnBeforeSerialize() { }
    }

}
